import request from "@/utils/request.js";
import axios from "axios";
import {getToken} from "@/utils/auth.js";

export function save(data) {
    return axios.post('http://localhost:8084/api/task/save',
        data,
        {
            headers: {
                'Content-Type': 'multipart/form-data',
                'Authorization': getToken()
            }
        }
    ).then(response => {
        // 直接返回 response.data，让调用者拿到接口返回数据
        return response;
    }).catch(error => {
        // 让调用者能拿到错误信息
        return Promise.reject();
    });
}



export function get(data) {
    return request({
        url: '/task/get',
        method: 'post',
        data: data
    })
}

export function getMessage(id) {
    return request({
        url: '/task/getMessage/' + id,
        method: 'get'
    })
}

export function getGantt(data) {
    return request({
        url: '/task/getGantt',
        method: 'post',
        data: data
    })
}

export function getGanttProject(data) {
    return request({
        url: '/task/getGanttProject' ,
        method: 'get',
        params: data
    })
}

export function update(data) {
    return axios.put('http://localhost:8084/api/task/update',
        data,  // 这里传入你的数据
        {
            headers: {
                'Content-Type': 'multipart/form-data',
                'Authorization': getToken()
            }
        }
    ).then(response => {
        // 直接返回 response.data，让调用者拿到接口返回数据
        return response;
    }).catch(error => {
        // 让调用者能拿到错误信息
        return Promise.reject();
    });

}

export function remove(id) {
    return request({
        url: '/task/remove/' + id,
        method: 'delete'
    })
}
export function getUser(id) {
    return request({
        url: '/project/getPersonList?id=' + id,
        method: 'get',
    })
}

export function deleteFile(data) {
    return request({
        url: '/file/deleteFiles',
        method: 'post',
        data: data
    })
}

export function downloadFile(id) {

    axios({
        method: 'get',
        url: 'http://localhost:8084/api/file/download/' + id,
        responseType: 'blob',
        headers: {
            'Authorization': getToken()
        }
    }).then(response => {
        if (!response || !response.data) {
            console.error('Invalid response or no data received');
            return;
        }

        // 获取文件名（可从前端参数或后端响应头中提取）
        const fileName = getFileNameFromResponse(response); // 自定义函数获取文件名
        console.log(1777, fileName)

        // 创建 Blob 对象
        const blob = new Blob([response.data], { type: response.headers['content-type'] });

        // 创建下载链接
        const url = window.URL.createObjectURL(blob);
        const a = document.createElement('a');
        a.href = url;
        a.download = fileName || 'unknown-file.ext'; // 设置文件名
        document.body.appendChild(a);
        a.click();
        a.remove();

        // 释放 Blob URL
        window.URL.revokeObjectURL(url);
    })
        .catch(error => {
            console.error('File download failed:', error);
        });

// 自定义函数：从前端参数或后端响应头中提取文件名
    function getFileNameFromResponse(response) {
        const contentDisposition = response.headers['content-disposition'];
        if (contentDisposition && contentDisposition.includes('filename=')) {
            const match = contentDisposition.match(/filename=["']?(.+?)["']?$/);
            return match ? decodeURIComponent(match[1]) : null;
        }
        return null; // 如果未找到文件名，则返回 null
    }


}

export function uploadFile(data, id) {
    axios.post('http://101.35.227.:8084/api/file/batchUploadFile?taskId=' + id,
        data,  // 这里传入你的数据
        {
            headers: {
                'Content-Type': 'multipart/form-data',
                'Authorization': getToken()
            }
        }
    ).then(response => {
        console.log(response.data);
    }).catch(error => {
        console.error(error);
    });
    //  return request({
    //     url: '/file/batchUploadFile' ,
    //     method: 'post',
    //     ContentType: 'multipart/form-data',
    //     data: data
    // })
}

export function getFileList(id) {
    return request({
        url: '/file/getFileList?taskId=' + id,
        method: 'get',
    })
}